package co.gov.mintic.inmueblesdisponibles.android;

import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
import co.gov.mintic.inmueblesdisponibles.util.AnalizadorDatos;
import co.gov.mintic.inmueblesdisponibles.vo.Inmueble;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;

/**
 * Activity encargado de visualizar el mapa de google con el inmueble indicado
 * 
 * @author Benjamin
 * 
 */
public class MapaInmueble extends MapActivity {

	private Inmueble inmueble = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.mapainmueble);
		inmueble = (Inmueble) getIntent().getExtras().get("inmueble");

		MapView mapView = (MapView) findViewById(R.id.mapview);
		mapView.setBuiltInZoomControls(true);

		LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
		updateLocation(locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER));

	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}


	protected void updateLocation(Location location) {
		MapView mapView = (MapView) findViewById(R.id.mapview);
		MapController mapController = mapView.getController();
		if (location != null) {
			List<Overlay> mapOverlays = mapView.getOverlays();
			mapOverlays.clear();

			GeoPoint point = new GeoPoint((int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6));
			mapController.setCenter(point);
			mapController.setZoom(16);

			UserOverlay marker = new UserOverlay(getResources(), point, R.drawable.user, "USER");
			mapOverlays.remove(marker);
			mapOverlays.add(marker);

			if (inmueble != null && inmueble.getLatitud() != null && inmueble.getLongitud() != null) {
				double lat = inmueble.getLatitud();
				double lon = inmueble.getLongitud();
				GeoPoint pointInm = new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
				int imgParking = R.drawable.inmueble;
				if ("CASA".equals(inmueble.getTipo()))
					imgParking = R.drawable.casa;
				else if ("FINCA".equals(inmueble.getTipo()))
					imgParking = R.drawable.finca;
				else if ("LOTE".equals(inmueble.getTipo()))
					imgParking = R.drawable.lote;
				else if ("BODEGA".equals(inmueble.getTipo()))
					imgParking = R.drawable.bodega;
				InmuebleOverlay inmOverlay = new InmuebleOverlay(getResources(), pointInm, imgParking, "ID:" + inmueble.getId(), inmueble.toString());
				mapOverlays.add(inmOverlay);
			}

			mapView.invalidate();
		} else {
			Toast.makeText(getBaseContext(), "GPS No disponible", Toast.LENGTH_SHORT).show();
			List<Overlay> mapOverlays = mapView.getOverlays();
			mapOverlays.clear();
			if (inmueble != null && inmueble.getLatitud() != null && inmueble.getLongitud() != null) {
				double lat = inmueble.getLatitud();
				double lon = inmueble.getLongitud();
				GeoPoint pointInm = new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
				mapController.setCenter(pointInm);
				mapController.setZoom(16);
				int imgParking = R.drawable.inmueble;
				if ("CASA".equals(inmueble.getTipo()))
					imgParking = R.drawable.casa;
				else if ("FINCA".equals(inmueble.getTipo()))
					imgParking = R.drawable.finca;
				else if ("LOTE".equals(inmueble.getTipo()))
					imgParking = R.drawable.lote;
				else if ("BODEGA".equals(inmueble.getTipo()))
					imgParking = R.drawable.bodega;
				InmuebleOverlay inmOverlay = new InmuebleOverlay(getResources(), pointInm, imgParking, "ID:" + inmueble.getId(), inmueble.toString());
				mapOverlays.add(inmOverlay);
			}
			mapView.invalidate();
		}
	}
}
